

#ifndef EZLOG_H
#define EZLOG_H


void commonLog(const char *file,const int line,int priority,const char *tag,const int guessLen,const char *format,...);
void commonlogToFile(const char *file,const int line,int priority,const char *tag,const int guessLen,const char *format,...);

void EZLogSetRunTimeDebug(bool isDebug);
bool EZLogIsRunTimeDebug();

#ifdef _DEBUG_

#define formatLogBufferLen (1024*100)

    #ifdef __IOS__ // ios log

    #define EZLOG_DEBUG(tag,format,...) commonLog(__FILE__,__LINE__,1,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_DEBUG_GUESSLEN(tag,len,format,...) commonLog(__FILE__,__LINE__,1,tag,len,format,##__VA_ARGS__)
    #define EZLOG_INFO(tag,format,...) commonLog(__FILE__,__LINE__,0,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_WARN(tag,format,...) commonLog(__FILE__,__LINE__,2,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_ERROR(tag,format,...) commonLog(__FILE__,__LINE__,3,tag,1024,format,##__VA_ARGS__)

	#define EZFILELOG(tag,format,...) commonlogToFile(__FILE__,__LINE__,1,tag,format,##__VA_ARGS__)

    #else // else android log

    #include <android/log.h>
    #include <jni.h>
//    void androidLog(const char *file,const int line,android_LogPriority priority,const char *tag,const char *format,...);

    #define EZLOG_DEBUG(tag,format,...) commonLog(__FILE__,__LINE__,ANDROID_LOG_DEBUG,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_DEBUG_GUESSLEN(tag,len,format,...) commonLog(__FILE__,__LINE__,ANDROID_LOG_DEBUG,tag,len,format,##__VA_ARGS__)
    #define EZLOG_INFO(tag,format,...) commonLog(__FILE__,__LINE__,ANDROID_LOG_INFO,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_WARN(tag,format,...) commonLog(__FILE__,__LINE__,ANDROID_LOG_WARN,tag,1024,format,##__VA_ARGS__)
    #define EZLOG_ERROR(tag,format,...) commonLog(__FILE__,__LINE__,ANDROID_LOG_ERROR,tag,1024,format,##__VA_ARGS__)


	#define EZFILELOG(tag,format,...) commonlogToFile(__FILE__,__LINE__,ANDROID_LOG_DEBUG,tag,format,##__VA_ARGS__)

    #endif // end __OBJC__

	#ifndef _DEBUG_FILE_LOG_
	#undef EZFILELOG
	#define EZFILELOG(tag,format,...)
	#endif

#else

#define formatLogBufferLen (1)

#define EZLOG_DEBUG(tag,format,...)
#define EZLOG_INFO(tag,format,...)
#define EZLOG_WARN(tag,format,...)
#define EZLOG_ERROR(tag,format,...)

#define EZFILELOG(tag,format,...) 

#endif // end _DEBUG





#endif /*EZLOG_H*/
